package com.learn.excel.core.util;

import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import org.apache.commons.lang3.StringUtils;

import java.text.SimpleDateFormat;
import java.util.*;

public class Utils {

    /***
     * 将对象转为map
     * @param obj
     * @return
     */
    public static Map mapOf(Object... obj) {
        Map map = new HashMap();
        for (int i = 0; i < obj.length / 2; i++) {
            map.put(obj[2 * i], obj[2 * i + 1]);
        }
        return map;
    }

    /***
     * 判断集合是否为 null 或者 没有元素
     * @param collection
     * @return
     */
    public static boolean isEmpty(Collection collection) {
        return collection == null || collection.size() == 0;
    }

    /***
     * 时间偏移
     * @param field 日 Calendar.DATE, 月 Calendar.MONTH
     * @param offset 偏移量 正数向未来偏移N天 负数向历史偏移N天
     * @return 偏移量为 向前或向后偏移几个日期，而不是偏移到某个日期
     */
    public static Date dateOffset(int field, int offset) {
        return dateOffset(field, offset, null);
    }

    /***
     * 时间偏移
     * @param field 日 Calendar.DATE, 月 Calendar.MONTH
     * @param offset 偏移量 正数向未来偏移N天 负数向历史偏移N天
     * @param pattern 时间模式, 默认使用 yyyyMMdd
     * @return 偏移量为 向前或向后偏移几个日期，而不是偏移到某个日期
     */
    public static Date dateOffset(int field, int offset, String pattern) {
        if (StringUtils.isBlank(pattern)) {
            pattern = DatePattern.PURE_DATE_PATTERN;
        }
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat(pattern);
        calendar.add(field, offset);
        Date date = DateUtil.parse(format.format(calendar.getTime()));
        return date;
    }


}
